package cn.edu.dyxy.controller;

import cn.edu.dyxy.entity.User;
import cn.edu.dyxy.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @author JokerQiu
 * @date 2021年12月22日 11:03
 */
//1、继承HttpServlet
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    /**
     * 注入业务层
     */
    private UserService userService = new UserService();

    /**
     * 2、重写doPost()方法
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("RegisterServlet");
        /**
         * 1、获取参数
         * 2、调用service处理
         * 3、返回结果
         */
        //设置请求参数的编码格式
        req.setCharacterEncoding("UTF-8");
        //新建一个用户对象
        User user = new User();
        //通过请求页面获取id为email的内容
        user.setEmail(req.getParameter("email"));
        user.setNickname(req.getParameter("nickname"));
        user.setPassword(req.getParameter("password"));
        System.out.println("邮箱：" + req.getParameter("email"));
        //保存用户信息，如果保存成功，返回影响行数row
        int row = userService.saveUsers(user);
        if (row > 0) {
            //不同页面之间交换数据
            HttpSession session = req.getSession();
            session.setAttribute("nickname", user.getNickname());
            session.setAttribute("email", user.getEmail());
            //用户的信息插入成功，我们需要跳转到注册成功的页面
            req.setAttribute("message", "注册成功");
            //重定向，收到请求成功之后，向另一个页面发起请求，跳转到新的页面
            resp.sendRedirect("register_ok.jsp");
        } else {
            //如果注册失败，那么将重新跳转回注册页面
            req.setAttribute("errorMsg", "注册失败");
            //转发，注册失败后，会回到原来注册页面
            req.getRequestDispatcher("register.jsp").forward(req, resp);
        }
    }
}
